1 package org.apache.maven.surefire.common.junit4;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.lang.reflect.InvocationTargetException;
23 import java.lang.reflect.Method;
24 import org.apache.maven.surefire.util.ReflectionUtils;
25
26 import org.apache.maven.surefire.util.SurefireReflectionException;
27 import org.junit.Ignore;
28 import org.junit.runner.Description;
29 import org.junit.runner.Request;
30
31
32
33
34
35 public final class JUnit4Reflector
36 {
37 private static final Class[] PARAMS = new Class[]{ Class.class };
38
39 private static final Class[] IGNORE_PARAMS = new Class[]{ Ignore.class };
40
41 public Ignore getAnnotatedIgnore( Description description )
42 {
43 Method getAnnotation = ReflectionUtils.tryGetMethod( description.getClass(), "getAnnotation", PARAMS );
44
45 if ( getAnnotation == null )
46 {
47 return null;
48 }
49
50 return (Ignore) ReflectionUtils.invokeMethodWithArray( description, getAnnotation, IGNORE_PARAMS );
51 }
52
53 public String getAnnotatedIgnoreValue( Description description )
54 {
55 final Ignore ignore = getAnnotatedIgnore( description );
56 return ignore != null ? ignore.value() : null;
57 }
58
59 public Request createRequest( Class<?>... classes )
60 {
61 try
62 {
63 return (Request) Request.class.getDeclaredMethod( "classes", Class[].class )
64 .invoke( null, new Object[]{ classes } );
65 }
66 catch ( NoSuchMethodException e )
67 {
68 return Request.classes( null, classes );
69 }
70 catch ( InvocationTargetException e )
71 {
72 throw new SurefireReflectionException( e.getCause() );
73 }
74 catch ( IllegalAccessException e )
75 {
76
77 throw new SurefireReflectionException( e );
78 }
79 }
80 }